Stippling of 2D Scalar Fields

by Lukas Herzberger and Jakob Troidl

Based on the paper Stippling of 2D Scalar Fields by Görtler et al., we created a web based tool to stipple 2D scalar fields.
hello
Original image
image of a heightmap
Stippled version of the image

Description

Our interactive web application is designed to stipple a wide range of the 2D scalar fields and is publicly accessible here. We support two data formats. First, .csv or .json files are supported to stipple discrete data sets such as data with spatial context. For example, the image below shows a stippled representation of severe car accidents in the United States during November 2020. We also provide a detailed view for these data sets by showing the respective Voronoi region and the data points when hovering over a stipple. For such data sets, x and y (or lon/lat) attributes must be specified to render the data points correctly.

The web application lets user tuned stippling parameters via the top left input panel. This panel allows setting the data set, adjusting the stipple size, the color map and enabling/disabling contours (mach banding).

eggholder_machbanding
Stippled visualization of severe card accidents in the US during November 2020. When hovering over a specific stipple the detail view displays the individual accidents in the respective Voronoi region.

Second, we stipple continuous data sets by supporting images as an input. We first convert the images to greyscale images and then use them as a density function with values on a regular grid. The visualization below illustrates this approach by showing a stippled version of Italy's height map.

eggholder_machbanding
Stippled visualization of a height map of italy. Red big stipples indicate a high altitude and small blue dots a low altitude.

Contours

To highlight the contours of 2D scalar fields, we have implemented mach banding as described in the paper. Below we show a comparison between a stippled visualization of the eggholder function without mach banding and with mach banding. The contours are clearly visible.

eggholder
The eggholder function stippled without mach banding.
eggholder_machbanding
The eggholder function stippled using mach banding. The contours are clearly visible.

Implementation

We implemented the application using Node.js, D3.js and JavaScript. We have deployed our application with Heroku. The documentation was generated by JsDoc. Data cleaning and processing was in part done in Python.

Links

📊 Program

💻 Code

📋 Documentation

References

Görtler, J., Spicker, M., Schulz, C., Weiskopf, D. and Deussen, O., 2019. Stippling of 2D scalar fields. IEEE transactions on visualization and computer graphics, 25(6), pp.2193-2204. Download

Datasets: US accidents, hail storms, topological data, Meister, CG-Logo